package com.fosss.band.utils;

import com.fosss.band.constant.UserRole;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

/**
 * @author: fosss
 * Date: 2024/1/9
 * Time: 14:48
 * Description:
 */
public class AuthRecord {
    /**
     * 存储角色!!不!!具有的权限（这样工作量小）
     */
    private static Map<Integer, Set<String>> map = new HashMap<>();

    static {
        //普通用户
        Set<String> userSet = new HashSet<>();
        userSet.add("/album/add");
        userSet.add("/album/delete");
        userSet.add("/album/update");
        userSet.add("/fan/delete");
        userSet.add("/band/add");
        userSet.add("/band/addMember");
        userSet.add("/band/deleteMember");
        userSet.add("/band/remove");
        userSet.add("/band/updateBand");
        userSet.add("/band/updateMember");
        userSet.add("/song/add");
        userSet.add("/song/delete");
        userSet.add("/song/update");
        userSet.add("/concert/add");
        userSet.add("/concert/delete");
        userSet.add("/concert/update");
        map.put(UserRole.BAND_CODE, userSet);

        //乐队成员
        Set<String> bandSet = new HashSet<>();
        bandSet.add("/fan/delete");
        map.put(UserRole.BAND_CODE, bandSet);
    }

    /**
     * 是否有权限
     *
     * @param role 角色
     * @param url  url
     * @return 结果
     */
    public static boolean hasAuth(Integer role, String url) {
        if (role.equals(UserRole.ADMIN_CODE)) return true;
        return !map.get(role).contains(url);
    }
}
